package com.holly.unit.bpmn.activiti.pojo;

import com.alibaba.fastjson.JSONArray;
import com.holly.unit.core.pojo.request.BaseRequest;
import com.holly.unit.scanner.api.annotation.field.ChineseDescription;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotNull;

/**
 * 类描述: 表单字段控制请求类封装
 *
 * @author fxr
 * @version 1.0.0
 * @date 2022/4/20 8:26
 */
@EqualsAndHashCode(callSuper = true)
@Data
public class ActivitiZNodeAuthRequest extends BaseRequest {

    /**id*/

    private String id;

    /***
     * 流程id
     */

    @NotNull(message = "流程定义id不能为空", groups = {add.class, edit.class,checkProcessIdAndTaskIdIsNull.class})
    @ChineseDescription("流程定义id")
    private String processId;

    /***
     * 任务节点id
     */
    @NotNull(message = "流程任务节点id不能为空", groups = {add.class, edit.class,checkProcessIdAndTaskIdIsNull.class})
    @ChineseDescription("流程任务节点id")
    private String taskId;

    /***
     * 规则编码
     */
    @NotNull(message = "规则编码不能为空")
    @ChineseDescription("规则编码")
    private String ruleCode;

    /***
     * 规则名称
     */
    @NotNull(message = "规则名称不能为空")
    @ChineseDescription("规则名称")
    private String ruleName;

    /***
     * 策略1显示2禁用
     */
    @NotNull(message = "流程定义id不能为空")
    @ChineseDescription("流程定义id")
    private String ruleType;

    /***
     * 状态(0无效1有效)
     */
    @NotNull(message = "状态不能为空")
    @ChineseDescription("状态(0无效1有效)")
    private String status;

    /***
     * 表单类型 1-代表编码方式  2-表单设计器方式
     */
    @NotNull(message = "表单类型不能为空")
    @ChineseDescription("表单类型 1-代表编码方式  2-表单设计器方式")
    private String formType;

    /***
     * 表单编码
     */
    @NotNull(message = "表单编码不能为空", groups = {add.class, edit.class})
    @ChineseDescription("表单编码")
    private String formBizCode;

    /***
     * 表单设计器中JSON中的KEY
     */
    @NotNull(message = "表单设计器中JSON中的KEY不能为空")
    @ChineseDescription("表单设计器中JSON中的KEY")
    private String desformComKey;


    private JSONArray formArray;

    /**
     * 参数校验分组：校验流程任务id和流程节点Id
     */
    public @interface checkProcessIdAndTaskIdIsNull {
    }

}
